網路爬蟲又稱網路蜘蛛,是一種自動瀏覽網頁的程式
我曾經把網路爬蟲和網路程式設計劃上等號
不過網路程式設計聽起來有點太廣泛 ? 好像在述說著整個 TCP 網路協定都屬於網路程式設計
後來我又換個說法,我改說 :「網路爬蟲應該是 HTTP 程式設計」,一切就合理多了
這個問題有點像是人們為什麼要寫程式 ?
程式設計師打造手機 APP 或者 Web 服務去提供使用者服務,或者打造優秀的工具去完成他們日常的工作
當然,寫程式還有一個最基本的需求,就是讓某些繁瑣的事項可以自動化
爬蟲當然也是一樣的道理,你提供使用者服務背後的功能可能就是以 requests 接上其他 API 實現的
爬蟲也可以用來打造優秀的工具,以筆者來說,我非常喜歡寫下載器類型的工具
以人類的視角來看,當我們今天打開 2022 iThome 鐵人賽的文章,我們的肉眼在乎的是字裡行間和圖片
爬蟲的視角其實會非常接近人類,只是我們改以程式碼的方式,去描述整個完整個過程
比方說,我們在瀏覽器輸入網址,可以看到精美的文章畫面,但如果我們用 curl 去請求網址,卻只能得到一坨 HTML
那是因為瀏覽器已經幫我們把 HTML 轉成人類適合閱讀的排版,而爬蟲需要自己解析 HTML 內容
到目前為止,假設你想撰寫一隻爬蟲,去爬取我的參賽文章,那麼首先你需要一個目錄作為進入點
目錄在肉眼看來,確實有 30 天份的文章,而爬蟲要做的第一件事情,就是請求目錄網址,然後解析 HTML,拿到 30 天份的文章連結
接下來會是一個迴圈,因為你必須走訪 30 天份的文章連結,並且請求它們,然後再次解析那些存在 HTML 裡面的文章內容和圖片
這就是一個爬蟲最基本該有的樣子,其實爬蟲程式和一般的程式沒什麼兩樣,都是在模仿人類的行為